[Dúvida] Apontadores/Registradores em C

1. [Dúvida] Apontadores/Registradores em C

Daniel Marchi
DMS_

(usa elementary OS)

Enviado em 04/11/2011 - 14:02h

Boa Tarde Caros, segue o código



Código:

#include<stdio.h>

int main()
{
int i;
int count;

printf("Digite quantas vezes deseja visualizar Hello World/n");
scanf("%d", &count);

for(i=0; i<count; i++)
{
printf("Hello World\n");
}
}

Com o código acima, o programa executa normalmente, porém





scanf("%d", &count);

Quando Executo sem o "&" na variável count, o seguinte erro aconteçe.



debian:/home/teste# gcc teste.c
debian:/home/teste# ./a.out
Digite quantas vezes deseja visualizar Hello World
3
Falha de segmentação
debian:/home/teste#

Isso acontece independente do número de vezes que eu peça para repetir.
Falha na segmentação, que eu saiba a flag & significa "Endereço De"

Logo &count = endereço de memória de count. Seria isso, queria entender melhor o porquê do erro. Não passo guardar o que eu digitar no scanf direto na variável, tenho que guardar no endereço de memória dela? Por que.

Obrigado

Obrigado

Obrigado.


  


2. Re: [Dúvida] Apontadores/Registradores em C

Daniel Marchi
DMS_

(usa elementary OS)

Enviado em 05/11/2011 - 12:49h

Bom consegui a resposta,

colocando apenas count você está colocando apenas o valor que count tem no momento, mas isto para função scanf não serve de nada, ela precisa do endereço de memória da variável count para poder muda-lo, &count = endereço de count, apenas count = 0.



scanf("%d", 0); //Sem o &, vc passa para função o valor de count

scanf("%d", 0x8048393); // Com o & vc passa o endereço da variável para a função altera-la

Isto só serve para funções se no caso fosse

count = 10

não precisaria do &
Pois assim vocÊ está "jogando" 10 dentro de count, consequentemente dentro do endereço de memória dela, agora com funções parece ser diferente, elas pedem o endereço de memória da variável, interessante.


Se alguém tiver algo a complementar, por favor^^


[]'s






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts